package com.winning.jsyd.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.winning.jsyd.entity.describe.Record;
import com.winning.jsyd.entity.describe.ResultSet;
import com.winning.jsyd.entity.enums.ServiceEnum;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author z_dd@winning.com.cn
 * @date 2019/5/5 16:44
 */
public interface UDService {

    /**
     * 居民健康信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveHaPersonInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 高血压报告卡
     *
     * @param page
     * @param serviceEnum,
     * @param date
     * @return ResultSet<DmHighbloodReport>
     * @author z_dd@winning.com.cn
     * @date 2019/5/29 10:47
     */
    ResultSet saveHighbloodReport(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 糖尿病报告卡
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/5/30 10:07
     */
    ResultSet saveDiabetesReport(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 高血压访视信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/5/30 16:30
     */
    ResultSet saveHighbloodVisit(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 糖尿病访视信息
     *
     * @param page
     * @param serviceEnum,
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/5/31 13:15
     */
    ResultSet saveDiabetesVisit(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 门诊收费信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/5 9:41
     */
    ResultSet saveOcmsRcptInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 门诊就诊病历信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/10 10:10
     */
    ResultSet saveMssOutInfo(Page page, ServiceEnum serviceEnum, String date);


    /**
     * 门诊处方主记录和明细记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/11 10:35
     */
    ResultSet saveMssPrescInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 检查主记录和明细记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/12 13:55
     */
    ResultSet saveEmrExamInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 检验主记录和明细记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/12 16:50
     */
    ResultSet saveEmrTestInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 住院病人费用明细信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return com.winning.jsyd.entity.describe.ResultSet
     * @author z_dd@winning.com.cn
     * @date 2019/6/13 14:15
     */
    ResultSet saveInpPatsBillDetail(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 病人结算主记录和明细信息
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveInpPatsSettle(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 医嘱记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveMssInOrder(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 住院处方主记录和明细记录。
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveEmrPrescInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 入院记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveMssAdminInfo(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 手术申请
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveMssOperationApply(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 手术记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveMssOperationRecord(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 出院记录
     *
     * @param page
     * @param serviceEnum
     * @param date
     * @return
     */
    ResultSet saveMssDischarge(Page page, ServiceEnum serviceEnum, String date);

    /**
     * 更新上传时间
     *
     * @param tableName
     * @param date
     */
    void insertDate(String tableName, String date);

    //    记录错误日志
     void  insertErrorLog(String taskID, String tableName, List<String> errorMsgs);

    //    统计上传结果
    void statisticalResults(Record record);

}
